<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1">

    
    <meta property="og:site_name" content="Devean Blog">
    <meta property="og:type" content="article">

    
    <meta property="og:image" content="https://devean.cn/img/ladder-sky-bg.jpg">
    <meta property="twitter:image" content="https://devean.cn/img/ladder-sky-bg.jpg" />
    

    
    <meta name="title" content="机器学习 | K临近" />
    <meta property="og:title" content="机器学习 | K临近" />
    <meta property="twitter:title" content="机器学习 | K临近" />
    

    
    <meta name="description" content="德文，程序员, 开源爱好者，生活探险家 | 这里是 德文 的博客，与你一起发现更大的世界。">
    <meta property="og:description" content="德文，程序员, 开源爱好者，生活探险家 | 这里是 德文 的博客，与你一起发现更大的世界。" />
    <meta property="twitter:description" content="德文，程序员, 开源爱好者，生活探险家 | 这里是 德文 的博客，与你一起发现更大的世界。" />
    

    
    <meta property="twitter:card" content="summary" />
    
    

    <meta name="keyword"  content="德文, Devean, DevonYe, 机器学习,量化金融, QuantitaTAtive Finance, 德文的网络日志, 德文的博客, Devean Blog, 博客, 个人网站, 互联网, Web, 云原生,微服务, Microservice">

    
    
    <meta name="baidu-site-verification" content="codeva-k4Gz4N5kH1" />
    
    <meta name="google-site-verification" content="5YbYjVsLhmXRSCU2u_xrAegZCOyvI296GhQyr-o9L9c" />


    <link rel="shortcut icon" href="/img/favicon.ico">

    <title>机器学习 | K临近 | 德文的博客| Devean Blog</title>

    <link rel="canonical" href="/post/2023-09-10-machine-learning-k-nearest-neighbours/">

    
    
    
    <link rel="stylesheet" href="/css/bootstrap.min.css">

    
    <link rel="stylesheet" href="/css/hugo-theme-cleanwhite.min.css">

    
    <link rel="stylesheet" href="/css/zanshang.css">

    
    <link rel="stylesheet" href="/css/font-awesome.all.min.css">

    
    

    
    <script src="/js/jquery.min.js"></script>

    
    <script src="/js/bootstrap.min.js"></script>

    
    <script src="/js/hux-blog.min.js"></script>

    
    <script src="/js/lazysizes.min.js"></script>

    <script src="/js/bing-clarity.min.js"></script>

    
    
    
    
    <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/katex.min.css">
<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/katex.min.js"></script>

<script defer src="https://cdn.jsdelivr.net/npm/katex@0.16.3/dist/contrib/auto-render.min.js" onload="renderMathInElement(document.body);"></script>
<script>
    document.addEventListener("DOMContentLoaded", function() {
        renderMathInElement(document.body, {
            delimiters: [
                {left: "$$", right: "$$", display: true},
                {left: "$", right: "$", display: false}
            ]
        });
    });
</script>
    

    
    
<script async src="https://www.googletagmanager.com/gtag/js?id=G-B430VD5TJ2"></script>
<script>
var doNotTrack = false;
if (!doNotTrack) {
	window.dataLayer = window.dataLayer || [];
	function gtag(){dataLayer.push(arguments);}
	gtag('js', new Date());
	gtag('config', 'G-B430VD5TJ2', { 'anonymize_ip': false });
}
</script>

    
</head>







<nav class="navbar navbar-default navbar-custom navbar-fixed-top">

    <div class="container-fluid">
        
        <div class="navbar-header page-scroll">
            <button type="button" class="navbar-toggle">
                <span class="sr-only">Toggle navigation</span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
                <span class="icon-bar"></span>
            </button>
            <a class="navbar-brand" href="/">Devean Blog</a>
        </div>

        
        
        <div id="huxblog_navbar">
            <div class="navbar-collapse">
                <ul class="nav navbar-nav navbar-right">
                    <li>
                        <a href="/">All Posts</a>
                    </li>
                    
                        
                        <li>
                            <a href="/categories/finance/">finance</a>
                        </li>
                        
                        <li>
                            <a href="/categories/life/">life</a>
                        </li>
                        
                        <li>
                            <a href="/categories/tech/">tech</a>
                        </li>
                        
                    
                    
		    
                        <li><a href="/archive//">ARCHIVE</a></li>
                    
                        <li><a href="/notes//">NOTES</a></li>
                    
                        <li><a href="/about//">ABOUT</a></li>
                    
		            <li>
                        <a href="/search"><i class="fa fa-search"></i></a>
		           </li>
                </ul>
            </div>
        </div>
        
    </div>
    
</nav>
<script>
    
    
    
    var $body   = document.body;
    var $toggle = document.querySelector('.navbar-toggle');
    var $navbar = document.querySelector('#huxblog_navbar');
    var $collapse = document.querySelector('.navbar-collapse');

    $toggle.addEventListener('click', handleMagic)
    function handleMagic(e){
        if ($navbar.className.indexOf('in') > 0) {
        
            $navbar.className = " ";
            
            setTimeout(function(){
                
                if($navbar.className.indexOf('in') < 0) {
                    $collapse.style.height = "0px"
                }
            },400)
        }else{
        
            $collapse.style.height = "auto"
            $navbar.className += " in";
        }
    }
</script>




<style type="text/css">
    header.intro-header {
        background-image: url('/img/ladder-sky-bg.jpg')
    }
</style>

<header class="intro-header" >

    <div class="container">
        <div class="row">
            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                <div class="post-heading">
                    <div class="tags">
                        
                        <a class="tag" href="/tags/machine-learning" title="Machine Learning">
                            Machine Learning
                        </a>
                        
                    </div>
                    <h1>机器学习 | K临近</h1>
                    <h2 class="subheading">Machine Learning K Nearest-Neighbours</h2>
                    <span class="meta">
                        
                            Posted by 
                            
                                     &#34;Devean&#34;
                             
                            on 
                            Sunday, September 10, 2023
                            
                            
                            
                            
                    </span>
                </div>
            </div>
        </div>
    </div>
</header>




<article>
    <div class="container">
        <div class="row">

            
            <div class="
                col-lg-8 col-lg-offset-2
                col-md-10 col-md-offset-1
                post-container">

                
                <blockquote>
<p>本文从概念、原理、距离函数、K 值选择、K 值影响、、优缺点、应用几方面详细讲述了 KNN 算法</p>
</blockquote>
<h2 id="k-近临k-nearest-neighbours">K 近临(K Nearest-Neighbours)</h2>
<p>一种简单的监督学习算法，惰性学习算法，在技术上并不训练模型来预测。适用于分类和回归任务。它的核心思想是：相似的对象彼此接近。例如，若果你想分类一个新的数据点(绿点)，可以查看训练数据中哪些数据点与它最接近，并根据这些最接近的数据点和标签来预测它的标签(红点或蓝圆)。</p>
<p>
  <img src="https://files.mdnice.com/user/50789/820309be-f639-4c8b-99f2-9a10f79dbf45.png" alt="">

</p>
<p>
  <img src="https://files.mdnice.com/user/50789/4d624ed3-03a0-4180-a30c-fc977b6d0064.png" alt="">

</p>
<h2 id="概念">概念</h2>
<p><strong>K:</strong> 这是一个用户指定的正整数，即训练数据分类数量，代表要考虑的最近邻居的数量，上图中假设 K=2,即训练数据分类为蓝色圆和红色三角两类标签。</p>
<p><strong>距离函数:</strong> 用于计算数据点之间的距离。最常见的是欧几里得距离、曼哈顿距离、马氏距离等。</p>
<p><strong>投票机制:</strong></p>
<ul>
<li><strong>分类任务:</strong> 将根据 k 个最近邻的多数投票来确定新数据点的类别。</li>
<li><strong>回归任务:</strong> 通常取 k 个最近邻的输出变量的平均值。</li>
</ul>
<h2 id="原理">原理</h2>
<ul>
<li><strong>距离计算：</strong> 对于给定的新数据点，计算它与训练数据集中每个点的距离。</li>
<li><strong>选取 K 个邻居：</strong> 从训练数据集中选取距离最近的 K 个点。</li>
<li><strong>投票 (对于分类)：</strong> 对于 K 个邻居，看哪个类别最为常见，并将其指定为新数据点的类别。</li>
<li><strong>均值 (对于回归)：</strong> 对于 K 个邻居，计算其属性的平均值，并将其指定为新数据点的值。</li>
</ul>
<h2 id="距离度量">距离度量</h2>
<h3 id="欧几里得距离-euclidean-distance">欧几里得距离 (Euclidean Distance)</h3>
<p>欧几里得距离的名称来源于古希腊数学家欧几里得，是衡量两点在平面或更高维空间中的&quot;直线&quot;距离。它基于勾股定理，用于计算两点之间的最短距离。在日常生活中，我们经常无意识地使用欧几里得距离，例如，当我们说两地之间的&quot;直线&quot;距离时，实际上是在引用欧几里得距离。
<strong>公式:</strong>
给定两点 <code>P</code> 和 <code>Q</code>，其坐标分别为 $P(x_1, x_2, &hellip;, x_n)$ 和 $Q(y_1, y_2, &hellip;, y_n)$ 在一个 n 维空间中，它们之间的欧几里得距离 <code>d</code> 定义为：</p>
<p>$d(P, Q) = \sqrt{\sum_{i=1}^{n} (x_i - y_i)^2}$</p>
<h3 id="曼哈顿距离-manhattan-distance">曼哈顿距离 (Manhattan Distance)</h3>
<p>曼哈顿距离得名于纽约的曼哈顿，因为在曼哈顿的街道布局是网格状的。想象一下，你在一个街区的一个角落，要走到对面的角落，你不能直接穿越街区，只能沿着街道走。这就是曼哈顿距离的来源，也因此它有时被称为“城市街区距离”。</p>
<p><strong>公式</strong></p>
<p>给定两点 <code>P</code> 和 <code>Q</code>，其坐标分别为 $P(x_1, x_2, &hellip;, x_n)$ 和 $Q(y_1, y_2, &hellip;, y_n)$ 在一个 n 维空间中，它们之间的曼哈顿距离 <code>L1</code> 定义为：</p>
<p>$L1(P, Q) = \sum_{i=1}^{n} |x_i - y_i|$</p>
<h3 id="闵可夫斯基距离-minkowski-distance">闵可夫斯基距离 (Minkowski Distance)</h3>
<p>闵可夫斯基距离是一种在向量空间中度量两个点之间距离的方法。它实际上是一种泛化的距离度量，可以看作是其他距离度量（如欧几里得距离、曼哈顿距离）的泛化。通过改变一个参数<code>p</code>，它可以表示多种距离度量。</p>
<p><strong>公式</strong></p>
<p>给定两点 <code>P</code> 和 <code>Q</code>，其坐标分别为 $P(x_1, x_2, &hellip;, x_n)$ 和 $Q(y_1, y_2, &hellip;, y_n)$ 在一个 n 维空间中，它们之间的闵可夫斯基距离 <code>Lp</code> 定义为：</p>
<p>$Lp(P, Q) = \left( \sum_{i=1}^{n} |x_i - y_i|^p \right)^{\frac{1}{p}}$</p>
<p>其中 <code>p</code> 是一个大于等于 1 的实数。特定的 <code>p</code> 值会导致其他常见的距离度量：</p>
<ul>
<li>当 <code>p = 1</code> 时，这变成了<strong>曼哈顿距离</strong>。</li>
<li>当 <code>p = 2</code> 时，这变成了<strong>欧几里得距离</strong>。</li>
</ul>
<h3 id="余弦相似性-cosine-similarity">余弦相似性 (Cosine Similarity)</h3>
<p>余弦相似性度量了两个向量方向的相似度，而不是它们的大小。换句话说，它是通过比较两个向量之间的夹角来测量它们的相似性的。夹角越小，相似性就越高。</p>
<p>它经常在高维空间中（如 TF-IDF 权重的文档向量）使用，因为在高维空间中，基于欧几里得距离的相似性度量可能不太有效。</p>
<h5 id="公式">公式</h5>
<p>给定两个向量 <code>A</code> 和 <code>B</code>，它们的余弦相似性定义为：</p>
<p>$\text{cosine similarity}(A, B) = \frac{A \cdot B}{|A| |B|}$</p>
<p>其中：</p>
<ul>
<li>$A \cdot B$ 是向量 <code>A</code> 和 <code>B</code> 的点积。</li>
<li>$|A|$ 和 $|B|$ 分别是向量 <code>A</code> 和 <code>B</code> 的欧几里得长度（或模）。</li>
</ul>
<p>公式可以进一步扩展为：</p>
<p>$\text{cosine similarity}(A, B) = \frac{\sum_{i=1}^{n} A_i B_i}{\sqrt{\sum_{i=1}^{n} A_i^2} \sqrt{\sum_{i=1}^{n} B_i^2}}$</p>
<p>这里，<code>n</code> 是向量的维度，而 $A_i$ 和 $B_i$ 分别是向量 <code>A</code> 和 <code>B</code> 在第 <code>i</code> 维度上的值。</p>
<p>余弦相似性值范围为[-1, 1]，其中 1 表示完全相似，0 表示不相关，而-1 表示完全相异。</p>
<h2 id="k-值的确定方法">K 值的确定方法：</h2>
<ul>
<li>
<p><strong>交叉验证：</strong> 这是确定 k 值的最常用方法。对于每一个可能的 k 值，使用交叉验证计算模型的预测错误率，选择错误率最低的 k 值。</p>
</li>
<li>
<p><strong>启发式方法：</strong> 有时，可以选择 sqrt(n)作为起始点，其中 n 是训练样本的数量。这只是一个粗略的估计，通常需要进一步验证。</p>
</li>
<li>
<p><strong>误差曲线：</strong> 画出不同 k 值对应的误差率曲线，选择误差变化开始平稳的点。</p>
</li>
<li>
<p><strong>领域知识：</strong> 在某些应用中，基于领域知识和经验选择 k 值可能更为合适。</p>
</li>
</ul>
<h2 id="k-值的影响">K 值的影响：</h2>
<h3 id="过小的-k-值">过小的 k 值：</h3>
<ul>
<li>分类：模型可能变得过于敏感和复杂。它可能对训练数据中的噪声或异常点特别敏感，从而容易过拟合。当 k=1 时，任何训练数据中的异常点都可能影响预测结果。</li>
<li>回归：模型可能会受到异常值的强烈影响，导致预测结果出现明显的波动。</li>
</ul>
<h3 id="过大的-k-值">过大的 k 值：</h3>
<ul>
<li>分类：模型可能变得过于简化。随着 k 值的增加，分类决策的边界会变得更加平滑，可能会忽视数据中的细微模式，导致欠拟合。</li>
<li>回归：模型同样可能会过于简化。大 k 值使模型的预测偏向于所有数据点的平均值，因此可能会忽视数据中的局部特性或细节。</li>
</ul>
<h2 id="优缺点">优缺点</h2>
<h3 id="优点">优点</h3>
<p>简单且直观。
无需训练阶段，适用于动态变化的数据集。
对异常值不敏感（取决于 K 的大小）。</p>
<h3 id="缺点">缺点</h3>
<p>计算复杂度高，因为对于每一个新的数据点，都需要与所有训练数据计算距离。
需要决定 K 的大小，这可能会影响结果。
高维数据中的性能下降。</p>
<h2 id="应用场景">应用场景：</h2>
<ul>
<li>
<p><strong>推荐系统:</strong></p>
<ul>
<li>基于用户之前的喜好推荐相似电影</li>
<li>推荐用户可能喜欢的曲目或歌手</li>
</ul>
</li>
<li>
<p><strong>文本分类:</strong>
区分垃圾邮件和正常邮件。</p>
</li>
<li>
<p><strong>图像识别:</strong> 识别包括上的手写邮政编码，分类投递邮件包裹</p>
</li>
<li>
<p><strong>医疗诊断：</strong> 预测患者可能的疾病风险。</p>
</li>
<li>
<p><strong>信用评分</strong>：预测客户的信用风险。</p>
</li>
<li>
<p><strong>欺诈检测</strong>：识别信用卡中的异常交易。</p>
</li>
<li>
<p><strong>位置基服务</strong>：基于位置提供餐厅或服务推荐。</p>
</li>
</ul>
<p>
  <img src="https://files.mdnice.com/user/50789/99d8f4cf-52ef-43bf-b4a0-74886881b8e1.png" alt="">

</p>


                
                
<div class="entry-shang text-center">
    
	    <p>「真诚赞赏，手留余香」</p>
	
	<button class="zs show-zs btn btn-bred">赞赏支持</button>
</div>
<div class="zs-modal-bg"></div>
<div class="zs-modal-box">
	<div class="zs-modal-head">
		<button type="button" class="close">×</button>
		<span class="author"><a href="https://devean.cn"><img src="/img/favicon.png" />Devean Blog</a></span>
        
	        <p class="tip"><i></i><span>真诚赞赏，手留余香</span></p>
		
 
	</div>
	<div class="zs-modal-body">
		<div class="zs-modal-btns">
			<button class="btn btn-blink" data-num="2">2元</button>
			<button class="btn btn-blink" data-num="5">5元</button>
			<button class="btn btn-blink" data-num="10">10元</button>
			<button class="btn btn-blink" data-num="50">50元</button>
			<button class="btn btn-blink" data-num="100">100元</button>
			<button class="btn btn-blink" data-num="1">任意金额</button>
		</div>
		<div class="zs-modal-pay">
			<button class="btn btn-bred" id="pay-text">2元</button>
			<p>使用<span id="pay-type">微信</span>扫描二维码完成支付</p>
			<img src="/img/reward/wechat-2.png"  id="pay-image"/>
		</div>
	</div>
	<div class="zs-modal-footer">
		<label><input type="radio" name="zs-type" value="wechat" class="zs-type" checked="checked"><span ><span class="zs-wechat"><img src="/img/reward/wechat-btn.png"/></span></label>
		<label><input type="radio" name="zs-type" value="alipay" class="zs-type" class="zs-alipay"><img src="/img/reward/alipay-btn.png"/></span></label>
	</div>
</div>
<script type="text/javascript" src="/js/reward.js"></script>

                

                
                <hr>
                <ul class="pager">
                    
                    <li class="previous">
                        <a href="/post/2023-09-08-machine-learning-basic-concepts/" data-toggle="tooltip" data-placement="top" title="机器学习 | 基础概念">&larr;
                            Previous Post</a>
                    </li>
                    
                    
                    <li class="next">
                        <a href="/post/2023-11-11-machine-learning-feature-scaling/" data-toggle="tooltip" data-placement="top" title="机器学习 | 特征缩放">Next
                            Post &rarr;</a>
                    </li>
                    
                </ul>
                

                



            </div>

            
            
            <div class="
                col-lg-2 col-lg-offset-0
                visible-lg-block
                sidebar-container
                catalog-container">
                <div class="side-catalog">
                    <hr class="hidden-sm hidden-xs">
                    <h5>
                        <a class="catalog-toggle" href="#">CATALOG</a>
                    </h5>
                    <ul class="catalog-body"></ul>
                </div>
            </div>
            

            
            <div class="
                col-lg-8 col-lg-offset-2
                col-md-10 col-md-offset-1
                sidebar-container">

                
                
                <section>
                    <hr class="hidden-sm hidden-xs">
                    <h5><a href="/tags/">FEATURED TAGS</a></h5>
                    <div class="tags">
                        
                        
                        
                        <a href="/tags/machine-learning" title="machine-learning">
                            machine-learning
                        </a>
                        
                        
                        
                        <a href="/tags/quantitative-finance" title="quantitative-finance">
                            quantitative-finance
                        </a>
                        
                        
                        
                        
                    </div>
                </section>
                

                
                
                <section>
                    <hr>
                    <h5>FRIENDS</h5>
                    <ul class="list-inline">
                        
                        <li><a target="_blank" href=""></a></li>
                        
                    </ul>
                </section>
                
            </div>
        </div>
    </div>
</article>




<footer>
    <div class="container">
        <div class="row">
            <div class="col-lg-8 col-lg-offset-2 col-md-10 col-md-offset-1">
                <ul class="list-inline text-center">                  
                    
                    <li>
                        <a href="mailto:devean.ye@gmail.com">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fas fa-envelope fa-stack-1x fa-inverse"></i>
                            </span>
                        </a>
                    </li>
		           
                    
                    
                    <li>
                        <a target="_blank" href="https://www.zhihu.com/people/devonaha">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fab  fa-stack-1x fa-inverse">知</i>
                            </span>
                        </a>
                    </li>
		            
                    
                    

		            
                    
                    <li>
                        <a target="_blank" href="/img/wechat-QRCode.png">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fab fa-weixin fa-stack-1x fa-inverse"></i>
                            </span>
                        </a>
                    </li>
		            
                    
                    <li>
                        <a target="_blank" href="https://github.com/devon-ye">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fab fa-github fa-stack-1x fa-inverse"></i>
                            </span>
                        </a>
                    </li>
		            
                    
                    
                    
                    <li>
                        <a target="_blank" href="https://www.linkedin.com/in/yourlinkedinid">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fab fa-linkedin fa-stack-1x fa-inverse"></i>
                            </span>
                        </a>
                    </li>
		           
                    
                    
                    <li>
                        <a target="_blank" href="https://stackoverflow.com/users/7220519">
                            <span class="fa-stack fa-lg">
                                <i class="fas fa-circle fa-stack-2x"></i>
                                <i class="fab fa-stack-overflow fa-stack-1x fa-inverse"></i>
                            </span>
                        </a>
                    </li>
                    
                    
                    
                    
                    
            
            
            
           
                   <li>
                       <a href='' rel="alternate" type="application/rss+xml" title="Devean Blog" >
                           <span class="fa-stack fa-lg">
                               <i class="fas fa-circle fa-stack-2x"></i>
                               <i class="fas fa-rss fa-stack-1x fa-inverse"></i>
                           </span>
                       </a>
                   </li>
            
             </ul>
		<p class="copyright text-muted">
                    Copyright &copy; Devean Blog 2023
                    <br>
                    <a href="https://themes.gohugo.io/hugo-theme-cleanwhite">CleanWhite Hugo Theme</a> by <a href="https://zhaohuabing.com">Huabing</a> |
                    <iframe
                        style="margin-left: 2px; margin-bottom:-5px;"
                        frameborder="0" scrolling="0" width="100px" height="20px"
                        src="https://ghbtns.com/github-btn.html?user=zhaohuabing&repo=hugo-theme-cleanwhite&type=star&count=true" >
                    </iframe>
                </p>
            </div>
        </div>
    </div>
</footer>




<script>
    function loadAsync(u, c) {
      var d = document, t = 'script',
          o = d.createElement(t),
          s = d.getElementsByTagName(t)[0];
      o.src = u;
      if (c) { o.addEventListener('load', function (e) { c(null, e); }, false); }
      s.parentNode.insertBefore(o, s);
    }
</script>






<script>
    
    if($('#tag_cloud').length !== 0){
        loadAsync("/js/jquery.tagcloud.js",function(){
            $.fn.tagcloud.defaults = {
                
                color: {start: '#bbbbee', end: '#0085a1'},
            };
            $('#tag_cloud a').tagcloud();
        })
    }
</script>


<script>
    loadAsync("https://cdn.jsdelivr.net/npm/fastclick@1.0.6/lib/fastclick.min.js", function(){
        var $nav = document.querySelector("nav");
        if($nav) FastClick.attach($nav);
    })
</script>






<script type="text/javascript">
    function generateCatalog(selector) {

        
        
        
        
            _containerSelector = 'div.post-container'
        

        
        var P = $(_containerSelector), a, n, t, l, i, c;
        a = P.find('h1,h2,h3,h4,h5,h6');

        
        $(selector).html('')

        
        a.each(function () {
            n = $(this).prop('tagName').toLowerCase();
            i = "#" + $(this).prop('id');
            t = $(this).text();
            c = $('<a href="' + i + '" rel="nofollow">' + t + '</a>');
            l = $('<li class="' + n + '_nav"></li>').append(c);
            $(selector).append(l);
        });
        return true;
    }

    generateCatalog(".catalog-body");

    
    $(".catalog-toggle").click((function (e) {
        e.preventDefault();
        $('.side-catalog').toggleClass("fold")
    }))

    


    loadAsync("\/js\/jquery.nav.js", function () {
        $('.catalog-body').onePageNav({
            currentClass: "active",
            changeHash: !1,
            easing: "swing",
            filter: "",
            scrollSpeed: 700,
            scrollOffset: 0,
            scrollThreshold: .2,
            begin: null,
            end: null,
            scrollChange: null,
            padding: 80
        });
    });
</script>






</body>
</html>
